{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 九天·毕昇 Jupyter使用说明\n",
    "\n",
    "## 一、文件读写权限说明\n",
    "\n",
    "1、课节学习实例中，data文件夹为自动挂载的课节数据，该目录为只读目录，不占用用户存储，无法新建和删除文件\n",
    "\n",
    "2、比赛打榜、求职答题实例中，与比赛打榜、求职答题实例名称同名的文件夹为自动挂载的比赛、求职题内容，该目录为只读目录，不占用用户存储，无法新建和删除文件\n",
    "\n",
    "3、如需修改只读目录中的文件并保存，可将文件夹或文件拷贝至其他目录后进行（JupyterLab默认启动目录为/root）"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "!cp -a /root/keras深度学习培训 /root/我的keras深度学习培训\n",
    "!cp /root/keras深度学习培训/代码示例.ipynb /root/我的代码示例.ipynb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4、除了运行上方代码复制文件以外，亦可在左侧文件浏览器中，选中只读目录中的文件，右键选择Copy复制后，在其他目录下右键选择Paste粘贴\n",
    "\n",
    "5、模型训练实例中，data文件夹为用户选择挂载的公开数据集和个人数据集，左侧文件浏览器显示路径分别为data/public和data/user，该目录为只读目录\n",
    "\n",
    "6、除上述实例中的只读目录外，其他目录所做变更可持久保存\n",
    "\n",
    "7、share文件夹用于您在您的不同实例间共享数据，平台默认将不同实例的存储数据相互隔离，如您需要在不同实例间共享数据，请您将数据拷贝至share文件夹中"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 二、文件管理说明\n",
    "\n",
    "1、下载文件：在Jupyter和VSCode中，右键单击要下载的文件，点击“Download”即可将文件下载至本地。\n",
    "\n",
    "2、下载文件夹：Jupyter不支持下载文件夹，文件夹可以在VSCode中下载，右键单击要下载的文件夹，出现选择菜单，点击\"Download\"即可下载文件夹至本地。\n",
    "\n",
    "3、删除文件或文件夹：右键单击要删除的文件或文件夹，点击“delete”即可删除。需注意，Jupyter不支持删除非空文件夹，可以在Terminal中执行命令删除。当文件夹内文件过多时，也可以在Terminal中执行命令删除。另外，实例中部分目录/文件为只读权限，无法删除。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 三、安装包及环境说明\n",
    "\n",
    "1、使用pip安装的软件包、使用conda安装的虚拟环境，以及在新安装的虚拟环境中安装的软件包（需使用conda install），已实现持久保存；使用apt安装的包重启实例后将会丢失\n",
    "\n",
    "2、在预置环境中，使用pip安装软件包的方式为，在Notebook中新建cell，执行pip install，无需加 “！”，需设置“--user”实现持久化保存，如下方代码示例："
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "pip install keras --user"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "3、pip和conda的安装目录：\n",
    "\n",
    "pip（配置--user）安装目录为： /root/.local\n",
    "\n",
    "conda create安装目录为： /root/.local/conda/envs\n",
    "\n",
    "4、安装后可能需要重启kernel后生效，路径：菜单栏“Kernel”-“Restart Kernel”\n",
    "\n",
    "5、执行!conda env list可查看所有环境，在terminal中，使用conda activate ***，可进入对应的kernel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "!conda env list"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "6、在Notebook中执行pip可查看当前使用的kernel对应的环境"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "具体如下：\n",
    "\n",
    "Python 3：/usr/bin/python3.6\n",
    "\n",
    "Caffe/CNTK 2.7/MXnet1.6/PyTorch 1.5/Tensorflow 2.1：/usr/local/bin/python\n",
    "\n",
    "Python 2.7 ：/opt/conda/envs/python2\n",
    "\n",
    "Rapids 0.10 ：/opt/conda/envs/rapids\n",
    "\n",
    "Tensorflow 1.14：/opt/conda/envs/tf1.14\n",
    "\n",
    "Paddle 1.8：/opt/conda/bin/python\n",
    "\n",
    "MindSpore 1.8.1：/opt/conda/envs/ms1.8.1/bin/python\n",
    "\n",
    "7、不同实例的环境配置相互隔离\n",
    "\n",
    "8、在Notebook文件中运行程序，需保持页面开启，否则程序会被中断；在Terminal中运行程序，可保持程序持续运行，特殊情况下出现被中断，一般是资源（内存、GPU、临时存储）不够用导致，建议修改程序的batch size 改小每次跑的数据量，或者升级实例使用的套餐规格。如您需要在 VSCode 中进行模型训练，建议在运行命令前增加 nohup（例如：nohup python xxx.py），确保 VSCode 页面关闭后模型训练仍能持续进行。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 四、数据读取推荐方式\n",
    "\n",
    "针对单卡实例，20G以内的数据集可放置到 /dev/shm 目录下，修改程序路径直接从 /dev/shm 目录读取数据集，可提高数据读取速度，加速模型训练。需注意的是，该目录无法实现永久保存，重启实例后数据会丢失。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 五、模型训练说明\n",
    "\n",
    "1、支持程序长时间运行的方式：\n",
    "\n",
    "（1）在Notebook文件中运行程序，需保持页面开启，否则程序会被中断；\n",
    "\n",
    "（2）在Terminal中运行程序，可保持程序持续运行，特殊情况下出现被中断，一般是资源（内存、GPU、临时存储）不够用导致，建议修改程序的batch size 改小每次跑的数据量，或者升级实例使用的套餐规格；\n",
    "\n",
    "（3）在 VSCode 中进行模型训练，建议在运行命令前增加 nohup（例如：nohup python xxx.py），确保 VSCode 页面关闭后模型训练仍能持续进行。\n",
    "\n",
    "2、闲置实例回收：为避免资源浪费，如资源闲置超出一定时间，平台将主动收回资源，实例将被锁定，需手动恢复运行。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2.7",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
